home *** CD-ROM | disk | FTP | other *** search
/ Alles Voor Internet / Tout Pour Internet / alles voor internet.iso / MacInternet™ / Telnet / NCSA / tn3270 2.3d26 source / tn3270 / switcher.c < prev    next >
Text File  |  1991-05-24  |  4KB  |  141 lines

  1. /*
  2.  *  tn3270 for the Macintosh Source Code
  3.  *  Brown University Computing and Information Services
  4.  *  Version 2.3d21, January 17, 1991
  5.  *  Copyright (c) 1988, 1989, 1990, 1991 by Brown University and by
  6.  *  Peter John DiCamillo.
  7.  *
  8.  *  Permission is granted to any individual or institution to use, copy,
  9.  *  or redistribute the binary version of this software and its
  10.  *  documentation provided this notice and the copyright notices are
  11.  *  retained.  Permission is granted to any individual or non-profit
  12.  *  institution to use, copy, modify, or redistribute the source files
  13.  *  of this software provided this notice and the copyright notices are
  14.  *  retained.  This software may not be distributed for profit, either
  15.  *  in original form or in derivative works, nor can the source be
  16.  *  distributed to other than an individual or a non-profit institution.
  17.  *  Any  individual or group interested in seeing and/or using these
  18.  *  source files but who are prevented from doing so by the above
  19.  *  constraints should contact Don Wolfe, Assistant Vice-President for
  20.  *  Computer Systems at Brown University, (401) 863-7250, for possible
  21.  *  software licensing of the source developed at Brown.
  22.  *
  23.  *  Brown University and Peter John DiCamillo make no representations
  24.  *  about the suitability of this software for any purpose.
  25.  *
  26.  *  BROWN UNIVERSITY AND PETER JOHN DICAMILLO GIVE NO WARRANTY, EITHER
  27.  *  EXPRESS OR IMPLIED, FOR THE PROGRAM AND/OR DOCUMENTATION PROVIDED,
  28.  *  INCLUDING, WITHOUT LIMITATION, WARRANTY OF MERCHANTABILITY AND
  29.  *  WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE.
  30.  *
  31.  */
  32.  
  33. #include "maclib.h"
  34. #include "termdef.h"
  35. #include "globals.h"
  36.  
  37. typedef struct WorldTable {
  38.     char *        WTPCBPtr;
  39.     short        WTFlags;
  40.     ProcPtr        WTBgtask;
  41.     Handle        WTScrbits;
  42.     WindowPtr    WTDeskAcc;
  43.     } WorldTable;
  44.  
  45. extern bgproc();    /* assembler routine to get background calls */
  46. extern char xdlg;
  47. extern DialogPtr xdlgptr;
  48. extern PaletteHandle myPalette;
  49.  
  50. sw_suspend(message)
  51. long message;
  52. {
  53. WorldTable * wt, * get_world();
  54.  
  55. if (!sw_active()) {            /* MultiFinder suspend event */
  56.     mf_bgrnd = 1;
  57.     exportscrap(0);
  58.     if (myWindow != 0) justGrowIcon(0);
  59.     if (xdlg) xfGrowIcon();
  60.     dfltcurs = 1;
  61.     SetCursor(&qd.arrow);
  62.     return;
  63.     }
  64. if (message & 0x00000020)    /* convert private to desk scrap if needed */
  65.     exportscrap(0);
  66. sw_bgrnd = 1;             /* indicate backgound mode pending */
  67. sw_upd = 0;                /* reset update flag */
  68. sw_beep = 0;            /* reset beep flag */
  69. wt = get_world();        /* install background routine */    
  70. wt->WTBgtask = (ProcPtr)bgproc; 
  71. }
  72.  
  73. sw_resume(message)
  74. long message;
  75. {
  76. WorldTable * wt, * get_world();
  77.  
  78. if (message & 0x00000020) importscrap();
  79.  
  80. dfltcurs = 1;
  81. SetCursor(&qd.arrow);
  82.  
  83. if (mf_bgrnd == 1) {
  84.     if (xdlg) {
  85.         SelectWindow(xdlgptr);
  86.         xfGrowIcon();
  87.         }
  88.     mf_bgrnd = 0;
  89.     if (myWindow != 0) {
  90.         if (colormac) {
  91.             ActivatePalette(myWindow);
  92.             updCTab();
  93.             newbackcolor();
  94.             }
  95.         justGrowIcon(0);
  96.         invldscr();
  97.         cs.stat_time += 8;        /* force time to be re-drawn */
  98.         newstat();
  99.         chkpx();
  100.         }
  101.     }
  102. if (sw_bgrnd == 0) return;
  103.  
  104. sw_bgrnd = 0;            /* indcate no longer in background */
  105. wt = get_world();        /* de-install background routine */
  106. wt->WTBgtask = 0;
  107. if (sw_upd) {            /* update for changes during background */
  108.     if (xdlg) xfGrowIcon();
  109.     if (myWindow != 0) {
  110.         justGrowIcon(0);
  111.         invldscr();
  112.         newstat();
  113.         chkpx();
  114.         }
  115.     }
  116. if (sw_beep) beep();
  117. }
  118.  
  119. sw_active()            /* tell caller if we're under Switcher */
  120. {
  121. static long * sw_globals = (long *)0x282;
  122.  
  123. if ((*sw_globals) == 0) return(0);
  124. if ((*sw_globals) == -1) return(0);
  125. return(1);
  126. }
  127.  
  128. WorldTable * get_world()
  129. {
  130. static unsigned long * ApplZone = (unsigned long *)0x2aa;
  131.  
  132. return((WorldTable *)((*ApplZone) - 18));
  133. }
  134.  
  135. sw_proc()                /* called as background process */
  136. {
  137. if (serflg) hndser();
  138. else if (tcpflg) tcpevent();
  139.      else if (netconn) getreq();
  140. }
  141.